查看原文
其他

Kubernetes 和 Docker

Cloud研习社 Cloud研习社 2023-06-06


在这里我们基本上是在讨论什么是 Kubernetes 和 Docker,它们之间有什么区别,它们是如何工作的,并且还讨论了关于 Kubernetes 与 Docker 的一些观点。基本上,这些不是一回事,而是密切相关的。因为当您使用 Kubernetes 时,您经常使用 Docker。  


什么是容器?


容器封装应用程序软件及其依赖项,以便从其运行的基础设施中抽象出来。现在,Continuous 基本上提供了一种逻辑打包机制,其中应用程序可以从它们实际运行的环境中抽象出来。现在,这种解耦允许基于容器的应用程序轻松一致地部署,无论目标环境是私有数据中心、公共云甚至是开发人员的个人笔记本电脑。 



什么是 Docker?


Docker 是一个用于容器化您的软件的平台,使用它您可以轻松地构建您的应用程序,将您的应用程序所需的依赖包放入容器中,此外,这些容器很容易在其他机器上运行。Docker 通过允许开发人员创建称为图像的模板来简化 DevOps 方法,您可以使用这些模板创建轻量级的虚拟机,称为容器。 


Docker 为软件行业提供了自动化基础设施、隔离应用程序、保持一致性和提高资源利用率的能力,使软件行业的事情变得更容易。



什么是 Kubernetes?


Kubernetes是谷歌平台开发的容器管理系统。它可以帮助您在各种类型的物理、虚拟和云环境中管理容器化应用程序。Google Kubernetes 是一种高度灵活的工具,可以始终如一地交付复杂的应用程序。应用程序在 100 到 1000 个单独服务的集群上运行。



Kubernetes 的主要特点

它具有大量的功能,如下所示。
  • 随处运行:它是一个开源工具,让您可以自由地利用本地、公共和混合云基础架构,让您将工作负载移动到您想要的任何地方。

  • 自动化: 例如,Kubernetes 将通过可服务主机为您控制容器的启动方式。

  • 交互: Kubernetes 能够同时管理更多的集群。& 它不仅允许水平甚至垂直缩放。

  • 附加服务:它提供附加功能以及容器管理,Kubernetes 提供安全网络和存储服务。

  • 自我监控:它还为您提供自我监控,因为它不断检查节点和容器本身的健康状况。



Docker的主要特点


  • 易于配置:这是 Docker 的主要功能之一,您可以在更少的时间和精力中轻松部署代码,因为您可以在各种环境中使用 Docker。基础设施的要求不再与应用程序的环境相关联,有助于更轻松、更快速地配置系统。

  • 你可以使用 swarm:它是 Docker 容器的集群和调度工具,SO swarm 使用 Docker API 作为前端,帮助我们使用各种工具到控制器,它还帮助我们将 Docker 主机的集群控制为单个虚拟主机,它是一组自组织的引擎,用于启用可插入的后弯。

  • 管理安全性: Docker 允许我们将秘密保存在 swarm 本身中。然后选择让服务访问某些秘密。它包括对引擎的一些重要命令,如秘密检查、秘密创建等。

  • 服务:服务是一个任务列表,可以让我们指定集群内容器的状态。每个任务代表一个应该运行的容器实例,swan 跨节点调度它们。

  • 更高的生产力:通过简化应用程序的技术配置和快速部署,无疑它提高了生产力,Docker 不仅有助于在隔离环境中执行应用程序,而且还减少了资源。



Docker的优点:


  • 仅构建一次应用程序:容器内的应用程序可以在安装了 Docker 的系统上运行。因此无需在不同平台上多次构建和配置应用程序。
  • 多睡觉少担心:使用 Docker,您可以在容器中测试您的应用程序并将其运送到容器中。这意味着您测试的环境与应用程序在生产环境中运行的环境相同
  • 可移植性: Docker 容器可以在任何平台上运行。它可以在任何本地系统、Amazon ec2、谷歌云、Virtual box 等上运行。
  • 版本控制:和 git 一样,Docker 也有内置的版本控制系统。Docker 容器就像 GIT 存储库一样工作,允许您提交对 Docker 映像的更改并对其进行版本控制。



Docker的缺点:



  • 缺失的功能:它有缺失的功能。有大量功能正在开发中,例如容器自注册、将文件从主机复制到容器的自检等等。

  • 容器中的数据:当容器在此之后发生故障时,它需要备份和恢复策略,尽管我们有几种解决方案,它们还不是自动化的或不是非常可扩展的。

  • 图形应用程序: Docker 被设计为部署不需要图形界面的服务器应用程序的解决方案,同时有一些创造性的策略,例如 x11 视频转发,您可以使用这些策略在容器内运行 GUI 应用程序。

  • 好处很少:通常,只有被设计为作为一组离散的微服务运行的应用程序才能从容器中获得最大收益,否则,Docker 唯一真正的好处是它可以通过提供简单的包机器来简化应用程序的交付。



Kubernetes 的优点:



自动容器调度: Kubernetes 可以将容器从一个节点重新调度到另一个节点,以提高资源利用率。这意味着您可以使用相同数量的机器完成更多工作,从而节省资金。

服务发现:当您有一堆需要相互通信的服务时,它们能够首先找到彼此是至关重要的。尤其如此,因为容器是自动调度的,并且可能会四处移动。值得庆幸的是,Kubernetes 使容器之间的通信变得容易。

自我修复: Kubernetes 会自动监控容器并在它们崩溃或不应该终止时重新安排它们。如果容器所在的节点发生故障,Kubernetes 还将重新调度容器。

滚动升级:幸运的是,Kubernetes 具有执行滚动更新的能力。这是旧容器明智地从相同容器的新版本中换出的地方,所有这些都不会中断正在运行的应用程序提供的服务。



Kubernetes 的缺点:



陡峭的学习曲线:即使对于最有经验的开发人员和 DevOps 工程师来说,Kubernetes 也不是一个容易学习的平台。

安装和配置: Kubernetes 由多个编号组成。应该单独配置和安装以初始化集群的组件。如果您手动安装 Kubernetes,您还应该配置安全性,包括创建证书颁发机构和颁发证书

无高可用: Kubernetes 默认不提供高可用模式来创建容错集群,您必须为 ETCD 集群手动配置 HA。

兼容性问题:有时当您拥有容器时,您可能需要将 Docker 与社区一起使用。但当时社区与现有的 Docker CLI 和编写工具不兼容。并且在迁移过程中,每当您必须迁移到无状态时,都需要付出更多努力。实际上,这需要付出很多努力。



Kubernetes 与 Docker:



Kubernetes
Docker
Kubernetes是一个开源平台,用于维护和部署一组容器

Docker 是一种用于在轻量级容器中自动部署应用程序的工具,以便应用程序可以在不同的环境中高效工作。

在实践中,Kubernetes 最常与 Docker 一起使用,以更好地控制和植入容器化应用程序。

使用 Docker,多个容器在同一硬件上运行的效率比 VM 环境高得多,并且 Docker 的生产力非常高。 

应用程序部署为 pod、部署和服务的组合。

应用程序以服务的形式部署。

它支持集群中容器的自动扩展。 

Docker 不支持自动缩放

健康检查有两种:liveness 和 readiness

健康检查仅限于服务

难以设置和配置

Docker 的设置和安装很容易

它没有大量的文档,但比 Docker 少得多。但它确实包括从安装到部署的所有内容。

Docker 文档更有效,更广泛,甚至更多功能,它包括从安装到部署的所有内容和快速入门说明以及更详细的教程

Kubernetes 的安装比 Docker 困难得多,甚至 Kubernetes 的命令也比 Docker 复杂得多

Docker 安装相当容易,通过使用更少的命令,您可以在虚拟机甚至云端安装 Docker

Azure、buffer、intel、Evernote、Shopify 使用 Kubernetes。

谷歌、亚马逊、ADP、VISA、市民银行、大都会人寿公司使用 Docker


推荐阅读

Linux 网络状态工具 ss 命令详解

万字好文,最全 VxLAN 知识详解

放后台的Linux任务没有了,试试这个命令

我是如何用10分钟理解Kubernetes的


除每周二、四、六定期更新的《Linux云计算一站式教程》以外,其余时间雷哥会推送一些工作中遇到的小知识、实战经验总结的文章。后续都会收录在“实战经验”合集中。


拉到最下方,给我“发消息”




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存